/*
 * File:   PalabraAleatoria.h
 * Author: root
 *
 * Created on September 15, 2012, 7:23 PM
 */

#ifndef PALABRAALEATORIA_H
#define PALABRAALEATORIA_H

/* -> esta clase sirve para almacenar una palabra y su identificador. Estos registros
 * pueden compararse entre sí. El comparador < funciona como un <= , compara primero
 * por identificador y luego por palabra almacenada. */

#include<fstream>
#include <limits>

using std::ofstream;

class PalabraAleatoria {

    private:
        char palabra[28];
        unsigned long identificador;

    public:
        enum SALIDA_GUARDAR {ARCH_INVALIDO,EXITO,DIR_ERRONEA};
        static const unsigned int TAM_PALABRA= 28;
        static const unsigned int TAM_REGISTRO= 32;

        void setPalabra(char*);
        char* getPalabra();
        void setIdentificador(unsigned long);
        unsigned long getIdentificador() const;
        unsigned int getLongitudPalabra();

        bool operator <(const PalabraAleatoria&);
        bool operator >(const PalabraAleatoria&);

        int guardar(char*);
        int guardar(ofstream*);
        int guardarComoTexto(ofstream* salida);

        // Permite leer una palabra aleatoria desde un archivo
        bool cargarPalabra(std::ifstream& fin);

        PalabraAleatoria();
        PalabraAleatoria(char*,unsigned long);
        PalabraAleatoria(const PalabraAleatoria&);

        static unsigned long MAXIMO_IMPOSIBLE(){
        	return std::numeric_limits<unsigned long>::max();
        }

};//PalabraAleatoria

enum MODO_GUARDADO {SOBREESCRIBIR,AGREGAR};

int guardarPalabrasAleatorias(PalabraAleatoria* palabrasAleatorias
,unsigned int cantidad,char* direccionArchivo,MODO_GUARDADO modo);

#endif  /* PALABRAALEATORIA_H */

